Redis持久化的方法(RDB、AOF) | 您所在的位置:网站首页 › redis 持久化模式 › Redis持久化的方法(RDB、AOF) |
Redis如何进行持久化: RDB:Redis DataBase AOF:Append Only File RDB与AOF混合使用 RDB(Redis DataBase)RDB持久化是以指定时间间隔执行数据集的时间点快照,就是在某一时刻的数据和状态以文件的形式写到磁盘上。如果Redis故障宕机,快照文件也不会丢失。这个快照文件称为RDB文件(dump.rdb)。 操作时我出现的疑问: 为什么我没有配置redis的持久化,重启之后数据并没有丢失? Redis默认使用RDB文件进行持久化,即使您没有显式地配置它。如果Redis在关闭时执行了快照,那么它将保存内存中的所有数据到磁盘上的RDB文件中。因此,在重启Redis时,Redis会从该文件中加载数据,并将其重新放入内存中。 以Redis v7版本为例,在配置文件中关于快照的配置:
以下配置是在redis v7下操作的。 设置快照的触发条件如果在10秒内出现两次修改,则触发快照操作。
设置rdb的保存位置,该路径文件夹需要事先创建好。
修改名称为了便于查找,可不修改。
连接redis并在10秒内增加两条数据,查看是否触发快照。
我们把dump6379.rdb文件先进行备份为dump6379.rdb.bak,然后清空redis数据,再关闭redis服务端。因为关闭redis服务、或者清空redis数据都会自动进行备份,所以会多出一个rdb文件,我们将它删除。再把备份文件dump6379.rdb.bak修改为dump6379.rdb,然后再次启动redis服务端。我们就可以看到数据已经会恢复到备份的时候。【当redis宕机的时候,注意要备份一下rdb文件,防止rdb文件被更新。还有就是最好将备份文件和redis服务器进行分机隔离,防止redis服务器异常时,备份文件也拿不到了】 手动触发操作 dbsave(推荐)连接redis后,在命令行输入dbsave后,后台会fork出一个子进程,不会阻塞,以异步的方式进行备份,不影响redis正常服务。 save(不推荐)连接redis后,在命令行输入save后,会对redis进行阻塞,在进行备份。在生产环境是不允许这样操作的,会导致redis服务中断异常。 RDB备份的缺点 因为rdb备份是需要配置时间和次数策略的,如果时间没到或者次数没达到,这时候redis服务宕机、断电或者kill -9暴力关进程,可能就会丢失最新的数据。 因为rdb备份会fork出一个子进程,如果数据量很大,fork可能会很耗时,子进程也会争抢消耗CPU资源。 修复异常rdb文件如果rdb文件数据出现异常,可以通过bin目录redis自带的命令进行修复
在redis.conf中,将策略修改为save ""即可。 AOF(Append Only File)AOF就是将redis执行过的所有指令以日志的形式记录到文件中(读操作不记录),当redis启动时,会读取该文件重新构建数据,完成数据恢复的工作。保存日志的文件叫appendonly.aof。 默认情况下,redis没有开启AOF的。开启AOF功能需要修改redis.conf设置appendonly yes。 AOF持久化工作流程以下配置是在redis v7下操作的。 开启AOF默认使用每秒写回策略
redis v7采用的是Multi Part AOF设计,会出现三种AOF文件 基本文件: appendonly.aof.1.base.rdb 增量文件: appendonly.aof.1.incr.aof appendonly.aof.2.incr.aof 清单文件 appendonly.aof.maniftest将appendonlydir文件夹进行备份为appendonlydir-bak,并操作redis进行增加命令操作,然后关闭redis服务端。将rdb文件和appendonlydir文件删除,将appendonlydir-bak备份文件恢复为appendonlydir,然后启动redis服务端,查看数据已经恢复正常。 异常恢复AOF备份文件如果出现宕机或者破坏,导致AOF文件错误或异常,会导致redis服务不能正常运行。需要通过redis自带的修复工具修复aof的增量文件。
启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。 自动触发默认配置:当AOF文件大小是上次rewrite后大小的一倍并且文件大于64M时。
触发重写机制后,本来是.1的文件,会变成.2的文件。
重写机制后,记录文件就会压缩成: set k1 1111 手动触发向服务端发送命令:bgrewriteaof RDB与AOF混合使用两种方式可以同时打开,但是由AOF说了算。RDB作为备用恢复手段,也可以保持启用。 在同时开启RDB和AOF持久化时,重启时只会加载AOF文件,不会加载RDB文件。 通过设置redis.conf的aof-use-rdb-preamble yes启用混合方式,设置为no表示禁用。 不做持久化,纯内存模式如果不做持久化,可以同时关闭RDB+AOF。 #禁用RDB # 我们仍可以使用命令bgsave、save手动生成RDB文件 save "" # 禁用AOF # 我们仍可以使用命令bgrewriteaof手动生成AOF文件 appendonly no |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |